#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <cmath>
using namespace std;
//bool _check(int num)
//{
//    if (num == 0 ) return false;
//    int sl = sqrt(num);
//    return sl * sl == num;
//}
//bool check(int num)
//{
//    int left, right, tmp = num, i = 1;
//    while (tmp)
//    {
//        int ref = pow(10, i++);
//        left = num / ref;
//        right = num % ref;
//        if (_check(left) && _check(right)) return true;
//        tmp /= 10;
//    }
//    return false;
//
//}
//int main()
//{
//    int n, m;
//    cin >> n >> m;
//    for (int i = n; i <= m; i++)
//    {
//        if ( _check(i) && check(i))
//        {
//            cout << i << endl;
//        }
//    }
//    return 0;
//}
string path;
int num;
void dfs()
{
	if (path.size() == 4)
	{
		cout << path << endl;
		return;
	}
	for (int i = 0; i <= num; i++)
	{
		path += (i + '0');
		dfs();
		path.pop_back();
	}
}
int main()
{
	num = 9;
	dfs();
	return 0;
}